package com.example.lib.c2.pc0;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * 显示锁
 */
public class Main3SeeLock {

    private int id = 0;

    private Lock lock = new ReentrantLock();

    public void count() {
        lock.lock();
        try {
            ++id;
        }finally {
            lock.unlock();
        }
    }

    //重入锁，在递归的时候可以反复进入
    //synchronized 默认就是 可重入
    //如果不可重入， 在递归第二次 会卡死
    public synchronized void add() {
        id++;
        add();
    }
}
